/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.cip.esymons.colegiatura.beans;

import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import org.cip.esymons.colegiatura.bc.DistritoDelegate;
import org.cip.esymons.colegiatura.bc.ProvinciaDelegate;
import org.cip.esymons.general.be.Distrito;
import org.cip.esymons.general.be.Provincia;

/**
 *
 * @author ADMINISTRADOR
 */
public class distritoController {

    private DistritoDelegate delegado;
    private ProvinciaDelegate delegadoProvincia;
    private Distrito distrito;
    private Provincia provincia;
    private Provincia proCodigo;

    public distritoController() {

        delegado = new DistritoDelegate();
        delegadoProvincia = new ProvinciaDelegate();
        provincia = new Provincia();
        proCodigo = new Provincia();
    }

    public ProvinciaDelegate getDelegadoProvincia() {
        return delegadoProvincia;
    }

    public void setDelegadoProvincia(ProvinciaDelegate delegadoProvincia) {
        this.delegadoProvincia = delegadoProvincia;
    }

    public DistritoDelegate getDelegado() {
        return delegado;
    }

    public void setDelegado(DistritoDelegate delegado) {
        this.delegado = delegado;
    }

    public Distrito getDistrito() {
        return distrito;
    }

    public void setDistrito(Distrito distrito) {
        this.distrito = distrito;
    }

    public Provincia getProvincia() {
        return provincia;
    }

    public void setProvincia(Provincia provincia) {
        this.provincia = provincia;
    }

    public Provincia getProCodigo() {
        return proCodigo;
    }

    public void setProCodigo(Provincia proCodigo) {
        this.proCodigo = proCodigo;
    }

    public Distrito buscaPorCodigo(Integer codigo){

        return delegado.find(codigo);
    }

    public Provincia buscaProvincia(Integer codigopro){

        provincia = new Provincia();
        return provincia = delegadoProvincia.buscaProvincia(codigopro);
    }

    public List<Distrito> getListaDistrito(){

        return delegado.findAll();
    }

    public String nuevo(){

        distrito = new Distrito();
        provincia = new Provincia();
        return "ir_a_nuevo";
    }

    public String Editar(){

        delegado.edit(distrito);
        distrito = new Distrito();
         mostrarMensaje("INFO: ", "Distrito registrado satisfactoriamente...", FacesMessage.SEVERITY_INFO);
        return "ir_a_listar";
    }

    public String grabar(){

        delegado.create(distrito);
        distrito = new Distrito();
         mostrarMensaje("INFO: ", "Actualización registrada satisfactoriamente...", FacesMessage.SEVERITY_INFO);
        return "ir_a_listar";
    }

    public String remover(){

        delegado.remove(distrito);
        distrito = new Distrito();
        return null;
    }

    public SelectItem[] getSelectListaItemDistrito(){

      try{
//        System.out.println("Ingreso 1");
        SelectItem[] selects = null;
        List<Distrito> listaDistrito = delegado.listaPorProvincia(provincia);
        selects = new SelectItem[listaDistrito.size()];
        int cont = 0;
        for(Distrito dist : listaDistrito){

            SelectItem item = new SelectItem(dist, dist.getDisNombre());
            selects[cont] = item;
            cont++;
        }
        return selects;
      }catch(Exception e){
            System.out.println("Ingreso Error");
            SelectItem[] selects = new SelectItem[1];
            SelectItem item = new SelectItem(null, "No existen distritos");
            selects[0] = item;
            return selects;
      }

    }

    public SelectItem[] getSelectListaItemDistrito2(){

      try{
        System.out.println("Ingreso 1");
        SelectItem[] selects = null;
        List<Distrito> listaDistrito2 = delegado.listaPorProvincia(proCodigo);
        selects = new SelectItem[listaDistrito2.size()];
        int cont = 0;
        for(Distrito dist2 : listaDistrito2){

            SelectItem item = new SelectItem(dist2, dist2.getDisNombre());
            selects[cont] = item;
            cont++;
        }
        return selects;
      }catch(Exception e){
            System.out.println("Ingreso Error");
            SelectItem[] selects = new SelectItem[1];
            SelectItem item = new SelectItem(null, "No existen distritos");
            selects[0] = item;
            return selects;
      }

    }

    public void mostrarMensaje(String resumen, String detalle, FacesMessage.Severity severidad) {
        try {
            FacesMessage fm = new FacesMessage(severidad, resumen, detalle);
            FacesContext.getCurrentInstance().addMessage(fm.toString(), fm);
        } catch (Exception e) {
            FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), e.getMessage());
            FacesContext.getCurrentInstance().addMessage(fm.toString(), fm);
        }
    }
}
